package com.deyuanyun.pic.settings.service.pipe;

import com.deyuanyun.pic.settings.controller.dto.PipeValidateVO;
import com.deyuanyun.pic.settings.controller.dto.PipeValveRoomInfraVO;
import com.deyuanyun.pic.settings.controller.dto.ValveRoomDTO;
import com.deyuanyun.pic.settings.domain.pipe.ValveRoom;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface ValveRoomService {

    /**
     * @param @param PipeValveRoomInfraVO
     * @return void
     * @Description: 新建站场阀室，包括：站场阀室名称、站场阀室代号
     * @author h.x.rong
     * @date 2015年12月23日
     */
    void insertValveRoom(PipeValveRoomInfraVO pipeValveRoomInfraVO);

    /**
     * @param @return
     * @return Page
     * @Description: 条件查询，包括：站场阀室名称、站场阀室代号，任务状态、状态
     * @author h.x.rong
     * @date 2015年12月23日
     */
    List<ValveRoomDTO> findByCondition(PipeValveRoomInfraVO pipeValveRoomInfraVO);


    /**
     * 批量删除未发布的场站阀室
     *
     * @param
     * @return
     * @author axiao(xj08.dream@gmail.com)
     * @date 2016-09-01
     */
    int deleteByIds(String[] ids);

    /**
     * 批量发布未发布的场站阀室
     * @param
     * @return
     * @author axiao(xj08.dream@gmail.com)
     * @date 2016-09-01
     */
    int updateStatus(String[] ids);


    /**
     * 场站阀室启批量启用、停用
     * @param ids
     * @param status 启用状态：不为空为启用
     * @return
     * @author axiao(xj08.dream@gmail.com)
     * @date 2016-09-01
     */
    int updateVRS(String[] ids, String status);

    /**
     * @param @param pipeValveRoomInfraVO
     * @return void
     * @Description: 站场阀室修改、编辑
     * @author h.x.rong
     * @date 2015年12月31日
     */
    public void updateVR(PipeValveRoomInfraVO pipeValveRoomInfraVO);

    /**
     * 验证场站阀室的名字或者代号是否重复
     * @param
     * @return
     * @author axiao(xj08.dream@gmail.com)
     * @date 2016-11-25
     */
    public boolean validateRepByVR(PipeValidateVO pipeValidateVO);

    List<ValveRoom> queryAllValueRoomList(Map map);

    Map queryValueRoomListByLineId(String lineId);

    /**
     * 查询所有的已发布已启用的场站阀室,或根据名字模糊查询
     * @param name 场站阀室名称
     * @return
     */
    List<ValveRoomDTO> queryAllValueRooms(String name);
    public ValveRoomDTO getValueRoomByName(String name);
    ValveRoomDTO selectByPrimaryKey(String id);
    ValveRoomDTO selectByPrimaryKeyCache(String id);

    /**
     * 查询管道经过的场站阀室
     *
     * @param lineId 管道id
     * @param startMileage 起点绝对距离
     * @param endMileage 终点绝对距离
     * @return
     */
    List<Map> queryValueRoom(String lineId, BigDecimal startMileage, BigDecimal endMileage);
}
